<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <div>1</div>
    <div>2</div>
    <div>3</div>
    <div>4</div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
</body>
<script>
//Array.from() 将两类对象转成数组    Array.of()  将一组值转换为数组
// ... 扩展运算符
// console.log(...[1,2,3,4,5])
// console.log(1,...[2,3,4,5,6],7,8)


// console.log(...document.querySelectorAll("div"))

// var  arrayLink = {
//     "0":"a",
//     "1":"b",
//     "2":"c",
//     length:3
// }

// var arr = Array.from(arrayLink)
// console.log(arr)
// console.log(typeof arr)
// console.log(Array.from("abcdefg"))
// console.log(Array.of(1,2,3,4,5))

    // copyWithin()
    // 数组实例的copyWithin方法，在当前数组内部，
    // 将指定位置的成员复制到其他位置（会覆盖原有成员），
    // 然后返回当前数组。target、start、end三个参数
    // console.log([1,2,3,4,5].copyWithin(0,3))

    // find的()和findIndex()
    //数组实例的find方法，用于找出第一个符合条件的数组成员

    // forEach(callback[, thisObject]) 在数组每个元素项上执行callback回调函数

    // map(callback[, thisObject]) 在数组的每个单元项上执行callback函数，并把返回包含回调函数返回值的新数组

    // filter(callback[, thisObject]) 返回一个包含所有在回调函数上返回为true的元素的新数组（译者注：callback在这里担任的是过滤器的角色，当元素符合条件，过滤
    // 器就返回true，而filter则会返回所有符合过滤条件的元素）。

    // every(callback[, thisObject]) 当数组中每一个元素在callback上被返回true时就返回true（译者注：同上，every其实类似filter，只不过它的功能是判断是不是数组中的所有元素都符合条件，并且返回的是布尔值）。

    // some(callback[, thisObject]) 只要数组中有一项在callback上被返回true，就返回true（译者注：同上，类似every，不过前者要求都符合筛选条件才返回true，后者只要有符合条件的就返回true

    // reduce(callback[, initialValue]) 使用回调函数 callback(firstValue, secondValue) 把数组列表计算成一个单一值
    
    let  arr1 = [1,2,3,4,5];

    // let result = arr1.map(function(item){
    //     return item * 2;
    // })
    // let result = arr1.map((item)=>{
    //     return item * 2;
    // })
    // let result = arr1.map(item=>{
    //     return item * 2;
    // })
    // let result = arr1.map(item=>item * 2)

    // console.log(result)

    // let  arr2 = [65,55,85,90,100,33];

    // let result2 = arr2.map(item=>item>=60?"及格":"不及格")
    
    // console.log(arr2)
    // console.log(result2)
    
    // let result3 = arr2.filter(item=>{
    //     if (item%3==0) {
    //         return true;
    //     } else {
    //         return false;
    //     }
    // })
    // let result3 = arr2.filter(item=> item%3==0)
    // console.log(result3)
    

    // let arr3 = [
    //     {"title":"T恤",price:80},
    //     {"title":"衬衫",price:60},
    //     {"title":"牛仔裤",price:100},
    //     {"title":"男鞋",price:150},
    //     {"title":"女鞋",price:180}
    // ]

    // let result4 = arr3.filter(item=> item.price>=100)
    // console.log(result4)


    let  arr2 = [65,55,85,90,100];
    // 累加求和
    // let result5 = arr2.reduce(function(prev,current,index){
    //     console.log(prev,current,index)//tmp  是前一项 prev   item 是当前项  current  index
    //     return  prev+current
    // })
    
   // 求平均值
    let result5 = arr2.reduce(function(prev,current,index){
        console.log(prev,current,index)//tmp  是前一项 prev   item 是当前项  current  index
        if (index!=arr2.length-1) {
            return prev+current
        } else {
             return (prev+current)/arr2.length;
        }
    })


    console.log(result5)


   var  arr4 = [10,20,30]
   var   total = arr4.reduce(function(prev,current){
        return prev * current;
   },0)
   console.log(total)

    arr4.every((v)=>console.log(v>10))
    var result6 = arr4.some((v)=>v>20)
    console.log(result6)

    arr4.fill(6)
    console.log(arr4)//

    

</script>
</html>